package com.woniu.cloud.shopassembly.apiImpl;

import com.woniu.cloud.api.ScoreGoodApi;
import com.woniu.cloud.common.dto.Result;
import com.woniu.cloud.common.exception.TicketException;
import com.woniu.cloud.entity.TScoreGood;
import com.woniu.cloud.form.ScoreInsertGoodForm;
import com.woniu.cloud.form.ScoreUpdateGoodForm;
import com.woniu.cloud.shopassembly.service.ITScoreGoodService;
import io.seata.spring.annotation.GlobalTransactional;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
import org.springframework.web.bind.annotation.*;

import javax.annotation.Resource;

/**
 * <p>
 * 店铺商品表 前端控制器
 * </p>
 *
 * @author hyy
 * @since 2021-09-22
 */
@RestController
@Slf4j
public class ScoreGoodApiImpl implements ScoreGoodApi {


    @Resource
    private ITScoreGoodService scoreGoodService;

    @Override
    @GlobalTransactional
    @GetMapping("getScoreGoodByScoreGoodId")
    public Result getScoreGoodByScoreGoodId(Integer scoreGoodId) {
        log.info("通过Id查找积分商品->scoreGoodId:{}",scoreGoodId);
        if (null==scoreGoodId) {
            return Result.fail("参数异常",null);
        }
        try {
            log.info("开始查询->scoreGoodId:{}",scoreGoodId);
            TScoreGood scoreGood=scoreGoodService.getScoreGoodByScoreGoodId(scoreGoodId);
            if (null!=scoreGood) {
                log.info("查询结果->{}",scoreGood);
                return Result.success("该商品存在",scoreGood);
            }
            return Result.success("该商品不存在",null);
        } catch (Exception e) {
            e.printStackTrace();
            return Result.fail("服务异常",null);
        }
    }

    @Override
    @GlobalTransactional
    @GetMapping("getScoreGoodByGoodName")
    public Result getScoreGoodByGoodName(String scoreGoodName,Integer pageIndex) {
        log.info("通过商品检索查找商品->scoreGoodName:{},pageIndex:{}",scoreGoodName,pageIndex);
        if (null==scoreGoodName) {
            return Result.fail("参数异常",null);
        }
        try {
            log.info("开始查询->scoreGoodName:{},pageIndex:{}",scoreGoodName,pageIndex);
            return scoreGoodService.getScoreGoodByGoodName(scoreGoodName,pageIndex);

        } catch (Exception e) {
            e.printStackTrace();
            return Result.fail("服务异常",null);
        }

    }

//    @Override
//    @GetMapping("getScoreGoodByScoreGoodType")
//    public Result getScoreGoodByScoreGoodType(String scoreGoodType,Integer pageIndex) {
//        log.info("通过商品类型查找商品->scoreGoodType:{},pageIndex:{}",scoreGoodType,pageIndex);
//        if (null==scoreGoodType) {
//            return Result.fail("参数异常",null);
//        }
//        try {
//            log.info("开始查询->scoreGoodType:{},pageIndex:{}",scoreGoodType,pageIndex);
//            return scoreGoodService.getScoreGoodByScoreGoodType(scoreGoodType,pageIndex);
//        } catch (Exception e) {
//            e.printStackTrace();
//            return Result.fail("查询失败",null);
//        }
//    }
    @Override
    @GlobalTransactional
    @PostMapping("insertScoreGood")
    public Result insertScoreGood(@RequestBody ScoreInsertGoodForm scoreGoodForm) {
        log.info("商品添加->scoreGoodForm:{}",scoreGoodForm);
        try {
            log.info("开始添加->scoreGoodForm:{}",scoreGoodForm);
            TScoreGood scoreGood = new TScoreGood();
            BeanUtils.copyProperties(scoreGoodForm, scoreGood);
            return scoreGoodService.insertScoreGood(scoreGood);
        } catch (Exception e) {
            e.printStackTrace();
            return Result.fail("服务异常",false);
        }
    }
    @PutMapping("updateScoreGood")
    @Override
    @GlobalTransactional
    public Result updateScoreGood(@RequestBody ScoreUpdateGoodForm scoreGoodForm) {
        log.info("商品信息修改->scoreGoodForm:{}",scoreGoodForm);
        try {
            log.info("开始修改->scoreGoodForm:{}",scoreGoodForm);
            TScoreGood scoreGood = new TScoreGood();
            BeanUtils.copyProperties(scoreGoodForm, scoreGood);
            return scoreGoodService.updateScoreGood(scoreGood);
        } catch (Exception e) {
            e.printStackTrace();
            return Result.fail("服务异常",false);
        }
    }
    @PutMapping("updateScoreGoodNumByScoreGoodId")
    @Override
    @GlobalTransactional
    public Result updateScoreGoodNumByScoreGoodId(Integer scoreGoodId, Integer scoreGoodNum) {
        log.info("商品库存修改->scoreGoodId:{},scoreGoodNum:{}",scoreGoodId,scoreGoodNum);
        try {
            log.info("开始修改->scoreGoodId:{},scoreGoodNum:{}",scoreGoodId,scoreGoodNum);
            return scoreGoodService.updateGoodGoodNumByGoodId(scoreGoodId, scoreGoodNum);
        } catch (Exception e) {
            e.printStackTrace();
            return Result.fail("服务异常",false);
        }
    }

    @Override
    public Result getScoreGoodByStoreAndGood(Integer storeId, Integer goodId) {
        log.info("根据店铺id 和商品Id 查询店铺商品表 storeId={},goodId={}",storeId,goodId);
        if(storeId==null||goodId==null){
            log.info("参数错误");
//            return Result.fail("参数错误",null);
            throw  new TicketException("参数异常");
        }
        TScoreGood scoreGood = scoreGoodService.getScoreGoodByStoreAndGood(storeId,goodId);
        return Result.success("查询成功",scoreGood);
    }

    @PutMapping("updateScoreGoodSellNumByScoreGoodId")
    @Override
    @GlobalTransactional
    public Result updateScoreGoodSellNumByScoreGoodId(Integer scoreGoodId, Integer scoreGoodSellNum) {
        log.info("商品销量修改->scoreGoodId:{},scoreGoodSellNum:{}",scoreGoodId,scoreGoodSellNum);
        try {
            log.info("开始修改->scoreGoodId:{},scoreGoodSellNum:{}",scoreGoodId,scoreGoodSellNum);
            return scoreGoodService.updateGoodSellNumByGoodId(scoreGoodId, scoreGoodSellNum);
        } catch (Exception e) {
            e.printStackTrace();
            return Result.fail("服务异常",false);
        }
    }

    @Override
    @GlobalTransactional
        @PutMapping("updateScoreGoodStatusByScoreGoodId")
    public Result updateScoreGoodStatusByScoreGoodId(Integer scoreGoodId,Integer scoreGoodStatus) {
        log.info("商品销量修改->scoreGoodId:{},scoreGoodStatus:{}",scoreGoodId,scoreGoodStatus);
        try {
            log.info("开始修改->scoreGoodId:{},scoreGoodStatus:{}",scoreGoodId,scoreGoodStatus);
            return scoreGoodService.updateScoreGoodStatusByScoreGoodId(scoreGoodId,scoreGoodStatus);
        } catch (Exception e) {
            e.printStackTrace();
            return Result.fail("服务异常",false);
        }
    }

    @Override
    @GlobalTransactional
    @DeleteMapping("deleteScoreGoodByScoreGoodId")
    public Result deleteScoreGoodByScoreGoodId(Integer scoreGoodId) {
        log.info("根据商品id删除商品->scoreGoodId:{}",scoreGoodId);
        try {
            log.info("开始删除->scoreGoodId:{}",scoreGoodId);
            return scoreGoodService.deleteGoodByGoodId(scoreGoodId);
        } catch (Exception e) {
            e.printStackTrace();
            return Result.fail("服务异常",false);
        }
    }
}
